﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

using SOAPRipleyService.Dominio;
using SOAPRipleyService.Persistencia;
using System.ServiceModel.Web;
using System.Net;

namespace SOAPRipleyService
{
    // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de clase "RipleyService" en el código, en svc y en el archivo de configuración a la vez.
    public class RipleyService : IRipleyService
    {

        private ClienteDAO dao = new ClienteDAO();

        public bool ValidaCliente(int dni_)
        {
            Cliente existeCliente = dao.ObtenerCliente(dni_);

            if (existeCliente == null)
            {
                throw new FaultException<ValidationException>(new ValidationException { ValidationError = "[RIESGOS RIPLEY] El cliente no ha sido evaluado por el area de Riesgos, Verifique con el Gerente de Tienda." },
                new FaultReason("[RIESGOS RIPLEY] El cliente no ha sido evaluado por el area de Riesgos, Verifique con el Gerente de Tienda."));
            }
            else
            {
                if (existeCliente.estado !="A")
                {
                    throw new FaultException<ValidationException>(new ValidationException { ValidationError = "[RIESGOS RIPLEY] El cliente ya ha sido evaluado" },
                    new FaultReason("[RIESGOS RIPLEY] El cliente ya ha sido evaluado."));

                }
                else
                {
                    return true;
                }
                
            }
        }

        public Cliente ObtenerCliente(int dni_)
        {
            Cliente existeCliente = dao.ObtenerCliente(dni_);
            if (existeCliente == null)
                throw new FaultException<ValidationException>(new ValidationException { ValidationError = "[RENIEC]: El DNI ingresado no es válido. No es posible continuar con el Proceso." },
                new FaultReason("[RIESGOS RIPLEY] El cliente no ha sido evaluado por el area de Riesgos, Verifique con el Gerente de Tienda."));
            else
                return existeCliente;
        }

        public List<Cliente> ListarTarjetasCliente()
        {
            return dao.ListarTarjetasCliente();
        }
    }
}
